home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / kernel / dev / ds5000.md / devFsOpTable.c < prev    next >
C/C++ Source or Header  |  1992-12-18  |  6KB  |  216 lines

  1. /* 
  2.  * devFsOpTable.c --
  3.  *
  4.  *    The operation tables for the file system devices.  
  5.  *
  6.  *    Copyright (C) 1989 Digital Equipment Corporation.
  7.  *    Permission to use, copy, modify, and distribute this software and
  8.  *    its documentation for any purpose and without fee is hereby granted,
  9.  *    provided that the above copyright notice appears in all copies.  
  10.  *    Digital Equipment Corporation makes no representations about the
  11.  *    suitability of this software for any purpose.  It is provided "as is"
  12.  *    without express or implied warranty.
  13.  */
  14.  
  15. #ifndef lint
  16. static char rcsid[] = "$Header: /cdrom/src/kernel/Cvsroot/kernel/dev/ds5000.md/devFsOpTable.c,v 1.6 92/08/13 15:53:39 secor Exp $ SPRITE (Berkeley)";
  17. #endif not lint
  18.  
  19.  
  20. #include <sprite.h>
  21. #include <dev.h>
  22. #include <devInt.h>
  23. #include <fs.h>
  24. #include <rawBlockDev.h>
  25. #include <devFsOpTable.h>
  26. #include <devTypes.h>
  27.  
  28. /*
  29.  * Device specific include files.
  30.  */
  31.  
  32. #include <devSyslog.h>
  33. #include <devNull.h>
  34. #include <devSCSIDisk.h>
  35. #include <devSCSITape.h>
  36. #include <devSCSIRobot.h>
  37. #include <devNet.h>
  38. #include <devBlockDevice.h>
  39. #include <scsiHBADevice.h>
  40. #include <raidExt.h>
  41. #include <tty.h>
  42. #include <graphics.h>
  43. #include <devStdFBInt.h>
  44. #include <devSmem.h>
  45.  
  46. static ReturnStatus NoDevice();
  47. static ReturnStatus NullProc();
  48.  
  49. #ifdef SERIALB_DEBUG
  50. extern ReturnStatus Dev_serialBOutTrace();
  51. extern ReturnStatus Dev_serialBInTrace();
  52. #endif
  53.  
  54.  
  55. /*
  56.  * Device type specific routine table:
  57.  *    This is for the file-like operations as they apply to devices.
  58.  *    DeviceOpen
  59.  *    DeviceRead
  60.  *    DeviceWrite
  61.  *    DeviceIOControl
  62.  *    DeviceClose
  63.  *    DeviceSelect
  64.  *    DeviceMMap
  65.  */
  66.  
  67. #ifndef lint
  68. DevFsTypeOps devFsOpTable[] = {
  69.     /*
  70.      * Serial lines used to implement terminals.
  71.      */
  72.     {DEV_TERM,       DevTtyOpen, DevTtyRead, DevTtyWrite,
  73.              DevTtyIOControl, DevTtyClose, DevTtySelect,
  74.              DEV_NO_ATTACH_PROC, NoDevice, NullProc},
  75.     /*
  76.      * The system error log.  If this is not open then error messages go
  77.      * to the console.
  78.      */
  79.     {DEV_SYSLOG,    Dev_SyslogOpen, Dev_SyslogRead, Dev_SyslogWrite,
  80.             Dev_SyslogIOControl, Dev_SyslogClose, Dev_SyslogSelect,
  81.             DEV_NO_ATTACH_PROC, Dev_SyslogReopen, NullProc},
  82.     /*
  83.      * SCSI Worm interface.
  84.      */
  85.     {DEV_SCSI_WORM, NoDevice, NullProc, NullProc,
  86.             NullProc, NullProc, NullProc, 
  87.             DEV_NO_ATTACH_PROC, NoDevice, NullProc},
  88.     /*
  89.      * The following device number is unused.
  90.      */
  91.     {DEV_PLACEHOLDER_2, NoDevice, NullProc, NullProc,
  92.             NullProc, NullProc, NullProc, 
  93.             DEV_NO_ATTACH_PROC, NoDevice, NullProc},
  94.     /*
  95.      * New SCSI Disk interface.
  96.      */
  97.     {DEV_SCSI_DISK, DevRawBlockDevOpen, DevRawBlockDevRead,
  98.             DevRawBlockDevWrite, DevRawBlockDevIOControl, 
  99.             DevRawBlockDevClose, Dev_NullSelect, DevScsiDiskAttach,
  100.             DevRawBlockDevReopen, NullProc},
  101.     /*
  102.      * SCSI Tape interface.
  103.      */
  104.     {DEV_SCSI_TAPE, DevSCSITapeOpen, DevSCSITapeRead, DevSCSITapeWrite,
  105.             DevSCSITapeIOControl, DevSCSITapeClose, Dev_NullSelect,
  106.             DEV_NO_ATTACH_PROC, NoDevice, NullProc},
  107.     /*
  108.      * /dev/null
  109.      */
  110.     {DEV_MEMORY,    NullProc, Dev_NullRead, Dev_NullWrite,
  111.             Dev_NullIOControl, NullProc, Dev_NullSelect,
  112.             DEV_NO_ATTACH_PROC, NullProc, NullProc},
  113.     /*
  114.      * Xylogics 450 disk controller.
  115.      */
  116.     {DEV_XYLOGICS, NullProc, Dev_NullRead, 
  117.            Dev_NullWrite, Dev_NullIOControl, 
  118.            NullProc, Dev_NullSelect, 
  119.            DEV_NO_ATTACH_PROC, NullProc, NullProc},
  120.     /*
  121.      * Network devices.  The unit number specifies the ethernet protocol number.
  122.      */
  123.     {DEV_NET,      DevNet_FsOpen, DevNet_FsRead, DevNet_FsWrite, 
  124.            DevNet_FsIOControl, DevNet_FsClose, DevNet_FsSelect,
  125.            DEV_NO_ATTACH_PROC, DevNet_FsReopen, NullProc},
  126.     /*
  127.      * Raw SCSI HBA interface.
  128.      */
  129.     {DEV_SCSI_HBA, DevSCSIDeviceOpen, Dev_NullRead, Dev_NullWrite,
  130.                     DevSCSIDeviceIOControl, DevSCSIDeviceClose, Dev_NullSelect,
  131.                     DEV_NO_ATTACH_PROC, NoDevice, NullProc},
  132.     /*
  133.      * RAID device.
  134.      */
  135.     {DEV_RAID, DevRawBlockDevOpen, DevRawBlockDevRead,
  136.                     DevRawBlockDevWrite, DevRawBlockDevIOControl,
  137.                     DevRawBlockDevClose, NullProc, DevRaidAttach,
  138.                     DevRawBlockDevReopen, NullProc},
  139.  
  140.     /*
  141.      * Debug device. (useful for debugging RAID device)
  142.      */
  143.     {DEV_DEBUG, DevRawBlockDevOpen, DevRawBlockDevRead,
  144.                     DevRawBlockDevWrite, DevRawBlockDevIOControl,
  145.                     DevRawBlockDevClose, NullProc, DevDebugAttach,
  146.                     DevRawBlockDevReopen, NullProc},
  147.  
  148.     /*
  149.      * The graphics device.
  150.      */
  151.     {DEV_MOUSE, DevGraphicsOpen, DevGraphicsRead, DevGraphicsWrite,
  152.            DevGraphicsIOControl, DevGraphicsClose, DevGraphicsSelect,
  153.            DEV_NO_ATTACH_PROC, NoDevice, NullProc}, 
  154.     /*
  155.      * These devices don't exist on a ds5000.
  156.      */
  157.     {13, NullProc, NullProc, NullProc, NullProc, NullProc, NullProc, 
  158.            DEV_NO_ATTACH_PROC, NullProc, NullProc},
  159.     /*
  160.      * /dev/smem
  161.      */
  162.     {DEV_SMEM,    NullProc, Dev_SmemRead, Dev_SmemWrite,
  163.             Dev_SmemIOControl, NullProc, Dev_SmemSelect,
  164.             DEV_NO_ATTACH_PROC, NullProc, NullProc},
  165.  
  166.     {15, NullProc, NullProc, NullProc, NullProc, NullProc, NullProc, 
  167.            DEV_NO_ATTACH_PROC, NullProc, NullProc},
  168.     {16, NullProc, NullProc, NullProc, NullProc, NullProc, NullProc, 
  169.            DEV_NO_ATTACH_PROC, NullProc, NullProc},
  170.     /*
  171.      * The standard frame buffer device.
  172.      */
  173.     {DEV_STDFB, DevStdFBOpen, NullProc, NullProc,
  174.             DevStdFBIOControl, DevStdFBClose, NullProc, 
  175.             DEV_NO_ATTACH_PROC, NoDevice, DevStdFBMMap},
  176.     /*
  177.      * The following device number is unused.
  178.      */
  179.     {DEV_PLACEHOLDER_4, NoDevice, NullProc, NullProc,
  180.             NullProc, NullProc, NullProc, 
  181.             DEV_NO_ATTACH_PROC, NoDevice, NullProc},
  182.     /*
  183.      * The following device number is unused.
  184.      */
  185.     {DEV_PLACEHOLDER_5, NoDevice, NullProc, NullProc,
  186.             NullProc, NullProc, NullProc, 
  187.             DEV_NO_ATTACH_PROC, NoDevice, NullProc},
  188.     /*
  189.      * The "jukebox", or tape/disk robot device.
  190.      */
  191.     {DEV_SCSI_ROBOT, DevSCSIExbRobotOpen, NullProc, NullProc,
  192.                 DevSCSIExbRobotIOControl, DevSCSIExbRobotClose,
  193.                 NullProc, DEV_NO_ATTACH_PROC, NoDevice, NullProc},
  194. };
  195.  
  196. static ReturnStatus
  197. NullProc()
  198. {
  199.     return(SUCCESS);
  200. }
  201.  
  202.  
  203. static ReturnStatus
  204. NoDevice()
  205. {
  206.     return(FS_INVALID_ARG);
  207. }
  208. #else /* LINT */
  209.  
  210. DevFsTypeOps devFsOpTable[1];
  211.  
  212. #endif /* LINT */
  213.  
  214. int devNumDevices = sizeof(devFsOpTable) / sizeof(DevFsTypeOps);
  215.  
  216.